package com.github.easyms.server.service.auth;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.easyms.common.entity.auth.User;
import com.github.easyms.common.vo.auth.LoginCheckVo;
import com.github.easyms.common.vo.auth.ResetPasswordVo;

/**
 * @author Leo.Liao
 * 用户信息业务接口
 * @date 2020-04-09 17:05:03
 */
public interface UserService extends IService<User> {

    /**
     * 锁定用户
     * @param userId
     */
    void lockingUser(String userId);

    /**
     * 更新密码错误次数
     * @param userId
     * @param pwdErrTimes
     */
    void updatePwdErrTimes(String userId,Integer pwdErrTimes);

    /**
     * 检查密码状态（是否过期；是否使用默认密码）
     * @param userId
     * @return expire:密码过期；default:使用默认密码；normal:密码状态正常
     */
    String checkPwdStatus(String userId);

    /**
     * 修改密码
     * @param resetPasswordVo
     */
    void changePassword(ResetPasswordVo resetPasswordVo);

    /**
     * 重置密码
     * @param userId
     */
    void resetPassword(String userId);

    /**
     * 登陆校验
     * @param loginCheckVo
     * @return
     */
    User loginCheck(LoginCheckVo loginCheckVo);

    /**
     * 登陆成功创建token
     * @param userId
     * @return
     */
    String createToken(String userId);

    /**
     * 退出登陆删除缓存中的Token
     * @param userId
     * @return
     */
    Boolean deleteToken(String userId);

    /**
     * 根据ID获取有效的的用户
     * @param userId
     * @return
     */
    User getActiveUserById(String userId);

    /**
     * 根据账号获取用户
     * @param account
     * @return
     */
    Boolean checkAccount(String userId, String account);

}
